package com.linwen.excise.huaweiOJ;

/**
 * @ClassName HJ_字符串加密
 * @Description
 * @Author lin
 * @Date 2022/2/22 下午11:08
 * @Version V1.0
 */

import java.util.*;

/**
 * * 题目描述
 *         有一种技巧可以对数据进行加密，它使用一个单词作为它的密匙。下面是它的工作原理：
 *         首先，选择一个单词作为密匙，如TRAILBLAZERS。如果单词中包含有重复的字母，只保留第1个，其余几个丢弃。现在，修改过的那个单词属于字母表的下面，如下所示：
 *         A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
 *         T R A I L B Z E S C D F G H J K M N O P Q U V W X Y
 *         上面其他用字母表中剩余的字母填充完整。在对信息进行加密时，信息中的每个字母被固定于顶上那行，并用下面那行的对应字母一一取代原文的字母(字母字符的大小写状态应该保留)。因此，使用这个密匙，Attack AT DAWN(黎明时攻击)就会被加密为Tpptad TP ITVH。
 *
 *         请实现下述接口，通过指定的密匙和明文得到密文。
 * 详细描述：
 *         接口说明
 *         原型：
 *         voidencrypt(char * key,char * data,char * encrypt);
 *         输入参数：
 *         char * key：密匙
 *         char * data：明文
 *         输出参数：
 *         char * encrypt：密文
 *         返回值：
 *         void
 * 输入描述:
 *         先输入key和要加密的字符串
 * 输出描述:
 *         返回加密后的字符串
 * 输入例子:
 *         nihao
 *         ni
 * 输出例子:
 *         le
 * */
public class HJ_字符串加密 {
    public static void main(String[] args) {
        String[] arr = new String[]{"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
        LinkedHashSet<String> table = new LinkedHashSet<>(Arrays.asList(arr));
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()){
            String s = scanner.nextLine();
            char[] chars = s.toCharArray();
            String[] password = new String[chars.length];
            for (int i = 0; i < chars.length; i++) {
                password[i] = String.valueOf(chars[i]);
            }
            String text = scanner.nextLine();
            char[] chars1 = text.toCharArray();
            String[] text1 = new String[chars1.length];
            for (int i = 0; i < chars1.length; i++) {
                text1[i] = String.valueOf(chars1[i]);
            }
            LinkedHashSet<String> table2 = new LinkedHashSet<>();
            for (int i = 0; i < password.length; i++) {
                table2.add(password[i]);
            }
            for (int i = 0; i < arr.length; i++) {
                table2.add(arr[i]);
            }
            HashMap<String, String> map = new HashMap<>();
            Iterator<String> iterator2 = table.iterator();
            Iterator<String> iterator3 = table2.iterator();
            for (int i = 0; i < 26; i++) {
                map.put(iterator2.next(),iterator3.next());
            }
            for (int i = 0; i < text1.length; i++) {
                System.out.print(map.get(text1[i]));
            }
            System.out.println();
        }

    }

}
